A computing system can include processing devices, such as microprocessors, central processing units (CPUs, such as x86 cores, etc.), graphic processing units (GPUs), and spatial processing units (SPUs), that share memory, such as a last level cache, on-chip memory, etc. The SPU can be reconfigurable and include multiple processing elements and a memory element. The processing elements are connected to each other and to the memory element through an interconnection network. Each processing element can execute basic operations and can process data that is either delivered from other processing elements or the memory element. An algorithm can be mapped onto the SPU by configuring each processing element to perform an operation, and data can flow in a pipelined manner across the processing elements and to memory.
The processing elements communicating to memory can vary depending on the algorithm being mapped onto the SPU, so that the number of processing elements communicating to memory can be high in one configuration and low in the next configuration. Moreover, the processing elements that are performing load operations and store operations can vary based on the algorithm, as well as the access patterns of those processing elements.